// 编写数据库配置文件
// 1、引入模块
const { Sequelize } = require('sequelize');
//2、 连接数据库的配置信息
const dbConfig = {
  host: "localhost",//本地
  port: 3306,//端口号
  username: 'root',//账户名
  dialect: 'mysql', // 明确指定 dialect
  password: '123456', // 自己设置的密码
  database: 'myDataBase',//数据库名称
  // 下面是一些可选的高级配置
  dialectOptions: {
    charset: 'utf8mb4', // 支持存储emojis等四字节字符
  },
  logging: false, // 控制日志输出，设为false则不输出SQL语句，默认为console.log
  timezone: '+08:00', // 设定时区，解决时间差问题，这里设置为东八区
  define: {
    timestamps: true, // 是否自动添加createdAt和updatedAt字段，默认为true
    paranoid: true, // 开启软删除，需要timestamps为true，会添加deletedAt字段
    underscored: true, // 使用下划线命名风格，如 created_at 而非 createdAt
    freezeTableName: true, // 阻止Sequelize自动将表名转换为复数形式
    charset: 'utf8mb4', // 设置表的默认字符集
  },
};

// 创建 Sequelize 实例
const sequelize = new Sequelize(
  dbConfig.database,
  dbConfig.username,
  dbConfig.password,
  {
    host: dbConfig.host,
    dialect: dbConfig.dialect,
    port: dbConfig.port,
    dialectOptions: dbConfig.dialectOptions,
    logging: dbConfig.logging,
    timezone: dbConfig.timezone,
    ...dbConfig.define, // 将define中的配置直接展开到options中
  }
);
// 测试连接
(async () => {
  try {
    await sequelize.authenticate();
    console.log('数据库连接成功');
  } catch (error) {
    console.error('数据库连接失败:', error);
  }
})();




module.exports.sequelize = sequelize;























// 这个是我之前写的！
// // 创建数据库的函数
// function connectMysql(sql) {
//   // 创建数据库连接池
//   let myConnection = mysql.createConnection(db_config)

//   // 连接数据库
//   myConnection.connect((err)=> {
//     if(err) {
//       console.log(`mysql连接失败:${err}！`);
//     }else {
//       console.log('mysql连接成功！');
//     }
//   });
  
//   // 写查询方法
//   // query查询是一个异步操作，所以用promise
//   return new Promise((resolve, reject) => {
//     // query()函数用于mysql语句查询
//     myConnection.query(sql, (err, result) => {
//       if(err) {
//         reject(err)
//       }else {
//         let res = JSON.parse(JSON.stringify(result))
//         closeMysql(myConnection)
//         resolve(res)
//       }
//     })
//   })
// }

// // 关闭数据库的函数
// function closeMysql(myConnection) {
//   myConnection.end((err)=> {
//     if(err){
//       console.log(`mysql关闭失败：${err}`);
//     }else {
//       console.log('mysql关闭成功');
//     }
//   })
// }
// // 导出
// module.exports.connectMysql  = connectMysql